package org.dtrd.modules.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.dtrd.modules.service.entity.bean.ServiceDetail;
import org.dtrd.modules.service.entity.bean.ServiceListInfo;
import org.dtrd.modules.service.entity.po.DtrdEntRdService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务套餐信息 服务类
 * </p>
 *
 * @author QR
 * @since 2021-11-19 18:52:54
 */
public interface IDtrdEntRdServiceService extends IService<DtrdEntRdService> {

    Map<Integer, String> getServiceIdToNameMap();

    /**
     * 更新或保存服务套餐信息
     * @param serviceDetail 服务套餐信息
     * @return 操作结果
     */
    boolean saveOrUpdateServiceInfo(ServiceDetail serviceDetail);

    /**
     * 服务套餐同名校验
     */
    boolean hasSameServiceName(Integer serviceId, String serviceName, String orgCode);

    /**
     * 获取服务套餐详情
     * @param serviceId 服务套餐id
     * @return 服务套餐详情对象
     */
    ServiceDetail getServiceInfo(Integer serviceId);

    /**
     * 检查分类id是否已经别使用
     */
    boolean hasCategoryService(Integer categoryId);

    /**
     * 获取服务套餐列表
     * @param packageId 服务包 id
     * @return 服务套餐列表
     * @deprecated 该方法已弃用，请使用根据包ID和orgCode进行查询
     */
    List<ServiceListInfo> getServiceList(Integer packageId);

    List<ServiceListInfo> getServiceList(Integer packageId, String orgCode);

    /**
     * 删除服务套餐, 同时会删除服务包和服务贪残关系表的记录
     * @param serviceId serviceId
     * @return 操作结果
     */
    boolean removeService(Integer serviceId);

    /**
     * 查询服务的名字
     */
    String getServiceName(Integer serviceId);

    String getServiceExecutorsByServiceDetailId(Integer serviceDetailId);
}
